PHP 8.2(2022 年发布)
只读类(Readonly Class)
类的所有属性默认为只读。
readonly class Point {
public function __construct(
public int $x,
public int $y
) {}
}
$point = new Point(1, 2);
// $point->x = 3; // 报错:Cannot modify readonly property
独立类型支持
true、false、null 作为独立类型。
function isTrue(mixed $value): true {
return $value === true;
}
析取范式类型(DNF Types)
支持复杂类型组合(如 (A|B) & (C|D))。
function process((A|B) & (C|D) $value) {
// 处理满足 A 或 B,同时满足 C 或 D 的值
}
MySQLi 新 API
新的 mysqli_execute_query 函数和 mysqli::execute_query 方法:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
die("Connect failed: " . $mysqli->connect_error);
}
$query = "SELECT * FROM users WHERE id = ?";
$result = $mysqli->execute_query($query, [1]);
if ($result) {
while ($row = $result->fetch_assoc()) {
var_dump($row);
}
$result->free();
} else {
echo "Error executing query: " . $mysqli->error;
}
$mysqli->close();
在常量表达式中获取枚举属性
enum Status: string {
case Active = 'active';
case Inactive = 'inactive';
public const ACTIVE_VALUE = self::Active->value;
public const INACTIVE_NAME = self::Inactive->name;
}
echo Status::ACTIVE_VALUE . "\n"; // Output: active
echo Status::INACTIVE_NAME . "\n"; // Output: Inactive
Traits 中的常量
trait MyTrait
{
public const VERSION = '1.0';
public function getVersion(): string
{
return self::VERSION;
}
}
class MyClass
{
use MyTrait;
}
$obj = new MyClass();
echo $obj->getVersion() . "\n"; // Output: 1.0
echo MyClass::VERSION . "\n"; // Output: 1.0